package com.houweishi.module.train.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.houweishi.common.annotation.Excel;
import com.houweishi.common.core.domain.BaseEntity;
import com.houweishi.module.copy.domain.BizCopy;
import com.houweishi.module.record.domain.BizApprovalRecord;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;

import java.util.Date;
import java.util.List;

/**
 * 培训管理对象 oa_train
 * 
 * @author houweishi
 * @date 2023-02-21
 */
@Data
public class OaTrain extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long trainId;

    /** 用户名 */
    @Excel(name = "用户名")
    private String username;

    /** 流水单号 */
    @Excel(name = "流水单号")
    private String serialNum;

    /** 培训事项 */
    @Excel(name = "培训事项")
    private String trainingItems;

    /** 发起人 */
    @Excel(name = "发起人")
    private String sponsor;

    /** 发起人所属部门 */
    @Excel(name = "发起人所属部门")
    private String sponsorDept;

    /** 参与培训人员 */
    @Excel(name = "参与培训人员")
    private String participant;

    /** 参与培训人员所属部门 */
    @Excel(name = "参与培训人员所属部门")
    private String participantDept;

    /** 培训申请发起时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "培训申请发起时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date initiateTime;

    /** 培训开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "培训开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 培训结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "培训结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 培训天数 */
    @Excel(name = "培训天数")
    private Long days;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 所属租户 */
//    @Excel(name = "所属租户")
    private Long tenantId;

    /** 员工id */
//    @Excel(name = "员工id")
    private Long staffId;

    /** 员工姓名 */
    @Excel(name = "员工姓名")
    private String staffName;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 是否使用模板（1是 2否） */
    @Excel(name = "是否使用模板")
    private String typeStatus;

    /** 模板id */
//    @Excel(name = "模板id")
    private Long typeId;

    /** 模板名称 */
    @Excel(name = "模板名称")
    private String typeName;

    /** 审批人(多个） */
    private String approver;

    /** 审批人姓名(多个） */
    private String approverName;

    /** 申请表类型id */
//    @Excel(name = "申请表类型id")
    private Long subscribePatternId;

    /** 申请表类型名称 */
    @Excel(name = "申请表类型名称")
    private String subscribePatternName;

    /** 用户id */
//    @Excel(name = "用户id")
    private Long userId;

    /** 发起人所属部门名称 */
    @Excel(name = "发起人所属部门名称")
    private String sponsorDeptName;

    /** 参与培训人员所属部门名称 */
    @Excel(name = "参与培训人员所属部门名称")
    private String participantDeptName;

    /** 发起人id */
//    @Excel(name = "发起人id")
    private Long sponsorId;

    /** 抄送人id */
//    @Excel(name = "抄送人id")
    private String copyerId;

    /** 抄送人姓名 */
    @Excel(name = "抄送人姓名")
    private String copyerName;

    /** 审批记录列表 */
    private List<BizApprovalRecord> approvalRecordList;

    /** 抄送记录列表 */
    private List<BizCopy> bizCopyList;

    public void setTrainId(Long trainId) 
    {
        this.trainId = trainId;
    }

    public Long getTrainId() 
    {
        return trainId;
    }
    public void setUsername(String username) 
    {
        this.username = username;
    }

    public String getUsername() 
    {
        return username;
    }
    public void setTrainingItems(String trainingItems) 
    {
        this.trainingItems = trainingItems;
    }

    public String getTrainingItems()
    {
        return trainingItems;
    }
    public void setSponsor(String sponsor) 
    {
        this.sponsor = sponsor;
    }

    public String getSponsor() 
    {
        return sponsor;
    }
    public void setSponsorDept(String sponsorDept) 
    {
        this.sponsorDept = sponsorDept;
    }

    public String getSponsorDept() 
    {
        return sponsorDept;
    }
    public void setParticipant(String participant) 
    {
        this.participant = participant;
    }

    public String getParticipant() 
    {
        return participant;
    }
    public void setParticipantDept(String participantDept) 
    {
        this.participantDept = participantDept;
    }

    public String getParticipantDept() 
    {
        return participantDept;
    }
    public void setInitiateTime(Date initiateTime) 
    {
        this.initiateTime = initiateTime;
    }

    public Date getInitiateTime() 
    {
        return initiateTime;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setDays(Long days) 
    {
        this.days = days;
    }

    public Long getDays() 
    {
        return days;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setTenantId(Long tenantId) 
    {
        this.tenantId = tenantId;
    }

    public Long getTenantId() 
    {
        return tenantId;
    }
    public void setStaffId(Long staffId) 
    {
        this.staffId = staffId;
    }

    public Long getStaffId() 
    {
        return staffId;
    }
    public void setStaffName(String staffName) 
    {
        this.staffName = staffName;
    }

    public String getStaffName() 
    {
        return staffName;
    }
    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this)
                .append("trainId", trainId)
                .append("username", username)
                .append("serialNum", serialNum)
                .append("trainingItems", trainingItems)
                .append("sponsor", sponsor)
                .append("sponsorDept", sponsorDept)
                .append("participant", participant)
                .append("participantDept", participantDept)
                .append("initiateTime", initiateTime)
                .append("startTime", startTime)
                .append("endTime", endTime)
                .append("days", days)
                .append("status", status)
                .append("tenantId", tenantId)
                .append("staffId", staffId)
                .append("staffName", staffName)
                .append("delFlag", delFlag)
                .append("typeStatus", typeStatus)
                .append("typeId", typeId)
                .append("typeName", typeName)
                .append("approver", approver)
                .append("approverName", approverName)
                .append("subscribePatternId", subscribePatternId)
                .append("subscribePatternName", subscribePatternName)
                .append("userId", userId)
                .append("sponsorDeptName", sponsorDeptName)
                .append("participantDeptName", participantDeptName)
                .append("sponsorId", sponsorId)
                .append("copyerId", copyerId)
                .append("copyerName", copyerName)
                .append("approvalRecordList", approvalRecordList)
                .append("bizCopyList", bizCopyList)
                .toString();
    }
}
